package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;

import javax.security.auth.message.callback.PrivateKeyCallback.Request;

import entity.Users;

public class UserDao {
	int result=-1;
	Connection con=null;
	PreparedStatement pr=null;
	ResultSet st=null;
	public int login(Users user) {//登录
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="select count(*) from users where uname=? and upwd=?";
			pr=con.prepareStatement(qr);
			pr.setString(1, user.getUName());
			pr.setString(2, user.getUPWD());
			st=pr.executeQuery();
			if(st.next()) {
				result=st.getInt(1);
			}
			if(result>0) {
				return 1;
			}
			else {
				return 0;
			}
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return -1;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return -1;
		}finally {
			try {
				if(st!=null)
					st.close();
				if(pr!=null)
					pr.close();
				if(con!=null)
					con.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
	}
		
	}
	public int Add(Users user) {//增加
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="insert into users(uname,upwd) values(?,?)";
			pr=con.prepareStatement(qr);
			pr.setString(1, user.getUName());
			pr.setString(2, user.getUPWD());
			if(pr.executeUpdate()>0) {//判断是否添加成功
				return 1;
			}else {
				return 0;
			}
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return 0;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return 0;
		}finally {
				try {
					if(st!=null)
						st.close();
					if(pr!=null)
						pr.close();
					if(con!=null)
						con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
	public Boolean Delete(int uid) {//删除
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="delete from users where uid=?";
			pr=con.prepareStatement(qr);
			pr.setInt(1, uid);
			if(pr.executeUpdate()>0) {//判断是否删除成功
				return true;
			}else {
				return false;
			}
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		}finally {
				try {
					if(st!=null)
						st.close();
					if(pr!=null)
						pr.close();
					if(con!=null)
						con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
	public List<Users> Select_All() {
		List<Users> lists= new ArrayList<>();
		try {
			Users users=null;
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="select * from users";
			pr=con.prepareStatement(qr);
			ResultSet set=pr.executeQuery();
			while(set.next()) {//输出数据
				int UID=set.getInt("UID");
				String UNAME=set.getString("UNAME");
				String UPWD= set.getString("UPWD");
				users= new Users(UID,UNAME,UPWD);
				lists.add(users);
			}
			return lists;
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		}finally {
				try {
					if(st!=null)
						st.close();
					if(pr!=null)
						pr.close();
					if(con!=null)
						con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
	public Boolean Update(int num,Users user) {//更改
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="update users set uname=?,upwd=? where uid=?";
			pr=con.prepareStatement(qr);
			pr.setString(1, user.getUName());
			pr.setString(2, user.getUPWD());
			pr.setInt(3, num);
			if(pr.executeUpdate()>0) {//判断是否更改成功
				return true;
			}else {
				return false;
			}
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return false;
		}finally {
				try {
					if(st!=null)
						st.close();
					if(pr!=null)
						pr.close();
					if(con!=null)
						con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
	public boolean IsExsist(int uid) {//查询是否存在人
		return SelectByID(uid)==null?false:true;
	}
	public Users SelectByID(int uid) {//根据uid查人
		try {
			Users users=null;
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/person","root","wlljl123");
			String qr="select * from users where uid=?";
			pr=con.prepareStatement(qr);
			pr.setInt(1, uid);//根据uid查询
			ResultSet set=pr.executeQuery();
			if(set.next()) {//输出数据
				int UID=set.getInt("UID");
				String UNAME=set.getString("UNAME");
				String UPWD= set.getString("UPWD");
				users= new Users(UID,UNAME,UPWD);
				return users;
			}else {
				return null;
			}
			
			
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
			return null;
		}finally {
				try {
					if(st!=null)
						st.close();
					if(pr!=null)
						pr.close();
					if(con!=null)
						con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
}
